✒️ 2025-05-22 15:21 내용 수정
- 원격 접속 명령어와 설명을 정리
- 원격 접속 시 방화벽이 활성화되어 있다면 예외처리를 해주거나, 방화벽을 비활성화 해야 서비스를 이용할 수 있다.
telnet
- 포트 번호 23번
- telnet은 유저로만 들어갈 수 있고, root로는 접속 불가
- telnet-server(접속만 허용), telnet(clinet 접속), openssh
- telnet은 보안이 없기 때문에 openssh를 설치해서 원격 접속의 보안을 추가해야 한다.
- telnet에서는 gedit을 사용할 수 없다.
| 명령어 |
옵션 |
설명 |
telnet localhost |
|
본인 컴퓨터 접속 |
telnet ipaddress |
|
입력한 ip 주소의 컴퓨터로 접속 |
|
ipaddress 포트번호 |
ip 주소를 포트번호로 접속 |
- 관리자 계정 텔넷 접속 허용하기
- 보안상 텔넷은 관리자로의 원격 접속을 허용하지 않는다.
- 인트라넷일 때만 사용
- /etc/securetty 에서 pts/1 ~ pts/3를 추가해버리면 telnet에서 root 접속이 가능해진다.
Openssh
- 포트 번호 22번
- openssh 패키지에 서버와 클라이언트 둘 다 포함
- telnet과 다르게 보안 연결을 지원한다.
- puTTY로 telnet과 openssh 접속을 선택할 수 있다.
| 명령어 |
옵션 |
설명 |
ssh ipaddress |
|
ip 주소 접속 |
|
유저계정@주소 |
유저 계정으로 ip 주소 접속, 유저 비밀번호 입력 필요 |
|
-p 포트번호 |
ip 주소에 ssh 서비스 포트 번호로 접속 |
|
-l 유저계정 |
유저 계정으로 접속, 유저 비밀번호 입력 필요 |
| 명령어 |
옵션 |
설명 |
id |
|
유저 정보, 유저 아이디, 그룹 정보 확인 |
ssh-keygen |
|
인증키를 서버에 직접 보내 암호 없이 로그인 가능 |
보안키
-
ssh는 최초 접속 시에 접속한 사용자에게 보안 키를 제공한다.
- 보안키를 이용하여 다음 접속 때는 보다 빠르고 편리하게 접속할 수 있게 해준다.
- yes를 입력해야 접속을 할 수 있고, no를 입력하면 접속을 못하고 튕겨버린다.
-
보안키는 자신의 홈 디렉터리(/home/계정명)에 .ssh 디렉터리에서 known_hosts에 저장되어 있다.
- 위치 : /home/계정명/.ssh/known_hosts
- ssh를 한 번이라도 사용해야 디렉터리가 생성된다.
-
보안 키가 위조/변경된 경우 MITM 공격 (man-in-the-middle attack)이 뜨면서 접속을 못한다.
- MITM은 유저의 접속 문제
- 해결 방법은 known_hosts 파일을 삭제하고 서버를 재접속해서 인증키를 다시 받는다.
rm -f /home/계정명/.ssh/known_hosts
인증키 수동 생성 및 전송
| 명령어 |
설명 |
ssh-keyregen |
유저가 인증키 생성 |
ssh-copy-id 계정명@보낼주소 |
서버에 id_rsa.pub 파일을 전송 |
- 유저가 인증키를 만들어 서버에 전송한 후 해당 보안키로 암호 없이 로그인이 가능하다.
- 원격 접속, 원격 파일 전송 시에 암호 없이 접속 및 파일 전송이 가능하다.
- 다만 이 경우에 다른 사람이 해당 컴퓨터로 접속하고 서버에 암호 없이 접근 가능하기 때문에 보안 상 위험할 수 있다.
- 인증키 생성 과정
ssh-keyregen으로 인증키를 생성한다.
- Enter file in which to save the key (/home/계정명/.ssh/id_rsa) ?: 공개키 기반의 기본값에 저장할지 결정할 수 있다.
- Enter passphrase ?: 인증키 사용 시 암호를 물어보도록 설정할 수 있다. 공백으로 두면 암호 없이 로그인으로 설정.
| 파일 |
설명 |
| id_rsa |
private 비밀키(로컬에서 저장) |
| id_rsa.pub |
public 공개키(서버로 전송) |
- 1번 방법 : 인증키를 생성 후 scp 명령어로 서버에 인증키 전송
- id_rsa.pub를 scp 명령어를 사용하여 서버의 /home/계정명/.ssh 디렉터리로 전송한다.(Telnet과 OpenSSH#파일 전송)
- 서버쪽에서는 다운로드된 id_rsa.pub을
mv id_rsa.pub authorized_key로 이름을 변경한다.
- 최종적으로 서버에서 /home/계정명/.ssh/authorized_key 가 존재하는지 확인한다.
- 2번 방법 : 인증키를 서버로 전송하는 명령어를 사용한다.
ssh 설정
| 파일 |
설명 |
| ssh_config |
클라이언트 설정파일 |
| sshd_config |
서버 설정 파일 |
- ssh 설정 파일은 /etc/ssh에 위치
- 접근 설정은 ssh 폴더 내 파일에서 수정해야 한다.
- 옛날 버전에선 ssh로 root 계정 접속을 할 수 있었지만, 최신 버전엔 막혀있다.
- sshd_config의
\#PermitRootLogin yes/no : 관리자 계정의 ssh 접속 가능/금지 여부 설정
- 리눅스에서 환경 설정이 변경되면 해당 서비스를 반드시 재실행해야 한다.
파일 전송
- ssh 설치 시 scp와 sftp이 함께 설치된다.
- 원래 원격에서는 파일 전송이 안되지만 scp와 sftp는 원격에서 파일을 전송할 수 있도록 해준다.
- scp (Secoure copy) : 안전하게 데이터를 전송
| 명령어 |
설명 |
scp 파일명 계정명@보낼주소:보낼디렉터리 |
로컬에 있는 파일을 원격 계정의 지정한 디렉터리로 업로드 |
scp 파일명 계정명@보낼주소:보낼디렉터리/바꿀이름 |
로컬에 있는 파일을 원격 계정의 지정한 디렉터리로 업로드 |
scp 계정명@받는주소:받는파일 받을위치 |
원격 계정에 있는 파일을 로컬에 지정된 위치로 다운로드 |
scp 계정명@받는주소:받는파일 바꿀이름 |
원격 계정에 있는 파일을 로컬에 지정된 위치로 다운로드 |
- root 디렉터리에 존재하는 파일을 원격으로 전송할 경우엔 사용자 홈 하위의 디렉터리에 복사한 후에 원격 전송해야 한다.
- /etc/shadow와 같은 중요 정보는 복사 허가가 거부된다.
- /etc/passwd와 같은 유저 이름 정보 등은 복사할 수 있다.
- sftp (Secoure ftp) : 안전하게 데이터를 업로드/다운로드 해준다.
- 암호화된 ssh 채널(통신포트)을 이용하여 안전하게 파일 전송을 해주는 FTP 클라이언트 프로그램
| 명령어 |
설명 |
| sftp 서버주소 |
서버로 sftp 접속(유저의 홈 디렉터리) |
| sftp> help |
sftp 도움말 출력 |
| sftp> ? |
sftp 도움말 출력 |
| sftp> get 파일명 |
로컬에서 sftp 명령어를 내린 위치에 파일을 다운로드 |
| sftp> get 파일명 바꿀이름 |
파일을 바꾼 이름으로 다운로드 |
| sftp> put 경로/파일명 |
파일을 서버에 업로드 |
| sftp> put 경로/파일명 바꿀이름 |
파일을 서버의 지정 위치에 이름을 바꿔서 업로드 |
| sftp> list [-1afhlnrSt] 경로 |
원격 서버 디렉터리의 파일을 리스트 |
| sftp> reget [-fPpRr] remote local |
파일 다운로드를 재개 |
| sftp> reput [-fPpRr] remote local |
파일 업로드를 재개 |
| sftp> df [-hi] 경로 |
현재 디렉터리나 경로를 포함한 파일 시스템의 통계 확인 |
| sftp> bye |
sftp 종료 |
| sftp> exit |
sftp 종료 |
| sftp>quit |
sftp 종료 |
| sftp> cd 경로 |
원격 디렉터리 위치를 경로로 이동 |
| sftp> chgrp grp 경로 |
경로 그룹 파일을 grp으로 변경 |
| sftp> chmod mode 경로 |
경로 파일의 권한을 mode로 변경 |
| sftp> chown own 경로 |
경로 파일의 소유자를 own으로 변경 |
| sftp> lcd 경로 |
로컬 디렉터리를 경로로 변경 |
| sftp> lls [ls option] 경로 |
로컬 디렉터리의 경로의 파일을 리스트 |
| sftp> lmkdir 경로 |
로컬 디렉터리 생성 |
| sftp> mkdir 경로 |
원격 디렉터리에서 디렉터리 생성 |
| sftp> pwd |
원격 디렉터리에서 현재 위치 확인 |
| stfp> rename oldpath newpath |
원격 파일의 이름을 변경 |
| sftp> rm 경로 |
원격 파일 제거 |
| stfp> rmdir 경로 |
원격 경로 제거 |
| sftp> version |
SFTP 버전 확인 |
| sftp> ! command |
로컬에서 command 실행 |
| sftp> ! |
로컬 셸로 escape |
PuTTy
- 윈도우에서도 사용 가능하고 telent과 ssh로 다른 컴퓨터에 접속할 수 있는 프로그램